Role | Sub-role | Technologies | comments | |||
Software Architecting | ||||||
multiple paradigms | ||||||
generalist | ||||||
not a single paradigm purveyor | ||||||
e.g. everything is Haskell – not | ||||||
e.g. everything is an Object – not | ||||||
e.g. everything is <xxx> - not | ||||||
whiteboards | ||||||
diagrams | ||||||
code snippets | ||||||
pseudo code | ||||||
DSLs | ||||||
shows ability to view problem from many angles | ||||||
Drakon | ||||||
StateCharts | ||||||
UML | ||||||
indirection | ||||||
UX Architect | ||||||
UX design is a divide-and-conquer activity | ||||||
design a rudimentary piece of the UX | ||||||
test it (for UX-ness, not for robustness) before proceeding | earliest drafts tested by Architect and Engineers ; later drafts tested by Customer (Stakeholder) | |||||
final design will be a composition of the various pieces | ||||||
once designed, Engineering makes it practical and robust | ||||||
Humane Interface (Jef Raskin) | ||||||
Engineering | ||||||
Realization Engineering | ||||||
define first-cut of realized architecture | ||||||
iterate design with Architect until realizable and all I’s dotted and T’s crossed | ||||||
Correctness Engineering | ||||||
proofs, etc. | ||||||
UX Engineer | ||||||
define parameters & timing for responsiveness | ||||||
usability testing | ||||||
feedback to UX architect | ||||||
Error Handler Engineer | ||||||
analyze testability of product ( & suggest changes) | ||||||
create procedures / scripts for Q/A | ||||||
Throw / catch | ||||||
Signals | ||||||
Events | ||||||
A.O.C. (Aspect Oriented Programming) | ||||||
Maintenance Engineer | ||||||
Refactoring | ||||||
D.R.Y. | ||||||
Optimization Engineer | ||||||
Profiling | ||||||
remove Architectural indirection if appropriate | ||||||
Security Engineering | ||||||
Test Engineer | ||||||
Incoming Test | test suitability of all bought-in technologies (e.g. code from GitHub) | |||||
Black Box Testing | ||||||
White Box Testing | ||||||
Q/A | devise ways to break product | |||||
Scripting | ||||||
Back-to-back testing | large systems can feed inputs to same kinds of systems | |||||
Sikuli | ||||||
Release Engineer | ||||||
CD | ||||||
Dashboards | ||||||
CI | ||||||
Implementation | ||||||
Q/A | ||||||
Maintenance | ||||||
Testing | ||||||
Hardware production test used HP Trace Analyzers that would generate a GUID for every test (including sequencing over time) for a “golden unit” (known to be good), when GUID didn’t match in production unit, then further testing was used to determine where the fault was (kind of a Canary CI, replacing Unit test with faster/cheaper tests which signalled Go/no-go only) | ||||||